/**
 * 根据id获得元素
 * @param oid
 * @returns
 */
function byId(oid){
	return document.getElementById(oid);
}

/**
 * 根据name获得指定的元素,不指定则返回全部
 */
function byName(oname,index){
	var obj=document.getElementsByName(oname);
	if(index){
		return obj[index];
	}else{
		return obj;
	}
}
/**
 * 跳转
 * @param url
 */
function to(url){
	window.location.href=url;
}
/**
 * 返回
 */
function back(){
	history.go(-1);
}
/**
 * 删除
 * @param msg
 * @param url
 */
function del(msg,url){
	if (window.confirm("确认删除"+msg+"？")){
		to(url);
	}
}
/**
 * 获得当前时间
 * @param oid目标Id,如果为null则返回结果
 * @param style 样式，date\time\
 */
function toDateString(oid,style){
	var now=new Date();
	var str=now.getFullYear()+"-"+(now.getMonth()+1)+"-"+now.getDate();
	if(style=="time"){
		str+=" "+now.getHours()+":"+now.getMinutes()+":"+now.getSeconds();
	}
	if(oid){
		byId(oid).value = str;
	}else{
		return str;
	}
}

/**
 * 获得指定name的check的选中值，以指定类型返回
 * @param ele check名字
 * @param returnType 返回的数据类型 ：
 * 								arr:一维数组
 * 								str:字符，以,分隔
 * 								url:不包含?号
 */
function getCheckValues(ele,returnType){
	if(!ele)return;
	
	var ckObj = (typeof ele=="object")?ele:document.getElementsByName(ele);
	var values=[];
	var temp=0;
	for (var i=0; i < ckObj.length; i++) {
		if(ckObj[i].checked){
			values[temp++]=ckObj[i].value;
		}
	}
	if(returnType){
		returnType=returnType.toLowerCase();
		if(returnType=="arr"){
			var str="";
			for (var i=0; i < values.length; i++) {
				if(str!="") str+=',';
				str+=values[i];
			};
			return str;
		}else if(returnType=="url"){
			var str="";
			for (var i=0; i < values.length; i++) {
			  if(str!=""){ str+='&'; }
			  str+=ele+"="+values[i];
			};
			return str;
		}
	}
	return values;
}

/**
 *清空指定select的所有option 
 */
function removeAllOptions(ele){
	if(!ele) return;
	var stObj=(typeof ele=="object")?ele:byId(ele);
	var otObj=stObj.options;
	for (var i=otObj.length-1; i >= 0 ; i--) {
		stObj.remove(i);
	};
}

/**
 * 把内容加到select对象中去
 * @param ele
 * @param data Json键值对 
 * @options 参数 doAppend=false 是否追加
 * 				 selectedIndex=1 选择第几个
 * 
 */
function addOptions(ele,data,options){
	if(!ele || !data)return;
	var stObj=(typeof ele=="object")?ele:byId(ele);
	this.selectedIndex=1;
	
	if(options && (typeof options=="object")){
		if(!options['doAppend']) removeAllOptions(ele);
		var selectedIndex=options['selectedIndex'];
		if(selectedIndex && (typeof selectedIndex=="number") && selectedIndex>0) this.selectedIndex=options['selectedIndex'];
	}
	for (var key in data) {
		var opObj=new Option(key, data[key]);
		stObj.add(opObj);
	};
	selected(stObj,this.selectedIndex);
};

/**
 * 把内容插入到指定select索引去
 * 如果没指定inIndex，默认插入到第一个位置
 */
function innerOption(ele,data,inIndex){
	if(!ele || !data)return;
	inIndex=inIndex==undefined?1:inIndex;
	var stObj=(typeof ele=="object")?ele:byId(ele);
	var opObjs=stObj.options;
	for ( var i = 0; i < opObjs.length; i++) {
		if(i==inIndex-1){
			for (var key in data) {
				var opObj=new Option(key, data[key]);
				stObj.insertBefore(opObj,opObjs[i]);
			};
		}
	}
	if(opObjs.length==0){//如果select没有节点
		for (var key in data) {
			var opObj=new Option(key, data[key]);
			stObj.add(opObj);
		};
	}
}

/**
 * 根据规则选择select的option
 * @ele id或select文档对象
 * @rules option索引或json对象，如{'value':1,'text':b}只匹配value为1并且text为b的options，此处的text为元素的innerHTML属性
 * 			
 */
function selected(ele,rules){
	if(!ele || !rules)return;
	var stObj=(typeof ele=="object")?ele:byId(ele);
	if(typeof rules=="number"){
		stObj.selectedIndex=rules-1;
	}else if(typeof rules=="object"){
		var opObjs=stObj.options;
		for ( var i = 0; i < opObjs.length; i++) {
			var flag=false;
			for(var key in rules){//只有所有规则都匹配才选择，这里是与运算
				if(key){
					var v=key!="text"?opObjs[i].getAttribute(key):opObjs[i].innerHTML;//如果是text是取innerHTML
					if(v!=rules[key]){
						flag=false;
						break;
					}else{
						flag=true;
					}
				}
			}
			if(flag){
				opObjs[i].selected=true;
			}
		}
	}
}

/**
 * 在指定表格中增加一行
 * @param ele 可以是表格id，也可是表格对象
 * @param data 一维数组,插入内容采用innerHTML，所以可以传Html代码
 * @param attrs tr属性，可选
 */
function addTr(ele,data,attrs){
	if(!ele || !data)return;
	var tbObj=(typeof ele=="object")?ele:byId(ele);
	var trObj=document.createElement("tr");
	for(var i in data){
		var tdObj=document.createElement("td");
		tdObj.innerHTML=data[i];
		trObj.appendChild(tdObj);
	}
	//属性
	if(attrs){
		for(var attrName in attrs){
			if(attrName){
				trObj.setAttribute(attrName,attrs[attrName]);
			}
		}
	}
	tbObj.appendChild(trObj);

}

/**
 * 根据tr中每行的check选中删除指定行，注意每行的tr必须有个id，且格式为：tr+checkbox的id
 */
function removeTrsByCheckbox(tbEle,ckEle){
	if(!tbEle || !ckEle)return;
	var tbObj=(typeof tbEle=="object")?ele:byId(tbEle);
	var ckValues=getCheckBoxValue(ckEle);
	for ( var i = 0; i < ckValues.length; i++) {
		var trObj=byId("tr"+ckValues[i]);
		//trObj.removeNode(true);
		tbObj.deleteRow(trObj.rowIndex);
	}
}

/**
 * 获得checkbox的值
 * @param ckEle
 */
function getCheckBoxValue(ckEle){
	if(!ckEle)return;
	var ckObjs=(typeof ckEle=="object")?ele:byName(ckEle);
	var values=[];
	for ( var i = 0; i < ckObjs.length; i++) {
		if(ckObjs[i].checked){
			values[values.length]=ckObjs[i].value;
		}
	}
	return values;
}
